package com.gimi.cloud.bbp.dto.product;

import com.gimi.cloud.bbp.common.enums.ResponseCodeEnum;
import org.hibernate.validator.constraints.NotBlank;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class ProductDto {
    //当前页
    @NotNull(groups = {productList.class})
    private Integer currentPage;
    //一页展示多少条数据
    @NotNull(groups = {productList.class})
    private Integer pageSize;

    //商品ID
    @NotBlank(groups = {EditProduct.class},message = "商品id不能为空")
    private String prodId;
    //商品名称
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "商品名称不能为空")
    private String prodName;
    //商品广告词
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "广告词不能为空")
    private String prodAdword;
    //商品商户ID
    @NotNull(groups = {productList.class, StoreCats.class},message = "商户id不能为空")
    private String merchantId;
    //店铺ID
    //@NotNull(groups = {productList.class,StoreCats.class})
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "店铺id不能为空")
    private String storeId;
    //店铺名称
    private String storeName;
    //商品价格
    private BigDecimal prodPrice;
    //商品最低价格
    private BigDecimal prodMinPrice;
    //商品最高价格
    private BigDecimal prodMaxPrice;
    //商品品牌ID
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "品牌不能为空")
    private String prodBrandId;
    //商品关键词
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "关键词不能为空")
    private String prodKeywords;
    //商品一级品类ID
    private String firstCatId;
    //商品二级品类ID
    private String secondCatId;
    //商品品类ID
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "品类不能为空")
    private String prodCatId;
    private String prodCatName;
    //商品商城类别（1：分期商城）
    private Integer marketType;
    //商品品牌名称
    private String prodBrandName;
    //商品租赁价格
    private BigDecimal prodRentPrice;
    //商品描述
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "商品描述不能为空")
    private String prodDesk;
    //商品计量单位
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "计量单位不能为空")
    private String prodMeasureUnit;
    //商品重量
    private Double weight;
    //商品体积
    private Double volume;
    //商品条形码
    @NotBlank(groups = {EditProduct.class},message = "条形码不能为空")
    private String merchantProdBarCode;
    //商品规格参数
    @NotBlank(groups = {AddProduct.class,EditProduct.class},message = "规格参数不能为空")
    private String specParameter;
    //商品规格参数
    private byte[] specParameters;
    //商品说明
    private String prodIntroduct;
    //商品图片路径集合
    private List<ProductImgDTO> productImgEntity;
    //商品图片路径集合
    private List<String> productImgUrl;
    //商品增值属性集合
    private List<ProductValueAddDTO> productValueAddEntity;
    //商品sku集合
    private List<ProductSkuDto> productSkuDto;

    private ResponseCodeEnum responseCode;

    //商品状态
    private Integer prodStatus;
    
    private String prodStatusStr;
    //商品上架时间
    private Date putawayTime;
    //商品下架时间
    private Date outOfStockTime;

    /**
     * 商品广告图片
     */
    private String adImg;

    private Date createTime;

    private List<LogisticsDTO> checkedLogistics;//物流公司列表
    
    //商品主图的访问地址
    private String imgUrl;

    //商品图片路径集合
    private List<ProductImgDTO> productImgs;
    
    //商品销售量
    private Integer prodSaleNum;

    public interface productList {

    }

    public interface StoreCats {

    }

    public interface AddProduct {

    }

    public interface EditProduct {

    }


    public ResponseCodeEnum getResponseCode() {
        return responseCode;
    }

    public void setResponseCode(ResponseCodeEnum responseCode) {
        this.responseCode = responseCode;
    }

    public List<ProductSkuDto> getProductSkuDto() {
        return productSkuDto;
    }

    public void setProductSkuDto(List<ProductSkuDto> productSkuDto) {
        this.productSkuDto = productSkuDto;
    }

    public String getProdId() {
        return prodId;
    }

    public void setProdId(String prodId) {
        this.prodId = prodId;
    }

    public String getProdName() {
        return prodName;
    }

    public void setProdName(String prodName) {
        this.prodName = prodName;
    }

    public String getProdAdword() {
        return prodAdword;
    }

    public void setProdAdword(String prodAdword) {
        this.prodAdword = prodAdword;
    }

    public String getMerchantId() {
        return merchantId;
    }

    public void setMerchantId(String merchantId) {
        this.merchantId = merchantId;
    }

    public String getStoreId() {
        return storeId;
    }

    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }

    public BigDecimal getProdPrice() {
        return prodPrice;
    }

    public void setProdPrice(BigDecimal prodPrice) {
        this.prodPrice = prodPrice;
    }

    public String getProdBrandId() {
        return prodBrandId;
    }

    public void setProdBrandId(String prodBrandId) {
        this.prodBrandId = prodBrandId;
    }

    public String getProdKeywords() {
        return prodKeywords;
    }

    public void setProdKeywords(String prodKeywords) {
        this.prodKeywords = prodKeywords;
    }

    public String getProdCatId() {
        return prodCatId;
    }

    public void setProdCatId(String prodCatId) {
        this.prodCatId = prodCatId;
    }

    public Integer getMarketType() {
        return marketType;
    }

    public void setMarketType(Integer marketType) {
        this.marketType = marketType;
    }

    public String getProdBrandName() {
        return prodBrandName;
    }

    public void setProdBrandName(String prodBrandName) {
        this.prodBrandName = prodBrandName;
    }

    public BigDecimal getProdRentPrice() {
        return prodRentPrice;
    }

    public void setProdRentPrice(BigDecimal prodRentPrice) {
        this.prodRentPrice = prodRentPrice;
    }

    public String getProdDesk() {
        return prodDesk;
    }

    public void setProdDesk(String prodDesk) {
        this.prodDesk = prodDesk;
    }

    public String getProdMeasureUnit() {
        return prodMeasureUnit;
    }

    public void setProdMeasureUnit(String prodMeasureUnit) {
        this.prodMeasureUnit = prodMeasureUnit;
    }

    public Double getWeight() {
        return weight;
    }

    public void setWeight(Double weight) {
        this.weight = weight;
    }

    public Double getVolume() {
        return volume;
    }

    public void setVolume(Double volume) {
        this.volume = volume;
    }

    public String getMerchantProdBarCode() {
        return merchantProdBarCode;
    }

    public void setMerchantProdBarCode(String merchantProdBarCode) {
        this.merchantProdBarCode = merchantProdBarCode;
    }

    public String getSpecParameter() {
        return specParameter;
    }

    public void setSpecParameter(String specParameter) {
        this.specParameter = specParameter;
    }

    public List<ProductImgDTO> getProductImgEntity() {
        return productImgEntity;
    }

    public void setProductImgEntity(List<ProductImgDTO> productImgEntity) {
        this.productImgEntity = productImgEntity;
    }

    public List<ProductValueAddDTO> getProductValueAddEntity() {
        return productValueAddEntity;
    }

    public void setProductValueAddEntity(List<ProductValueAddDTO> productValueAddEntity) {
        this.productValueAddEntity = productValueAddEntity;
    }

    public Integer getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    public String getFirstCatId() {
        return firstCatId;
    }

    public void setFirstCatId(String firstCatId) {
        this.firstCatId = firstCatId;
    }

    public String getSecondCatId() {
        return secondCatId;
    }

    public void setSecondCatId(String secondCatId) {
        this.secondCatId = secondCatId;
    }

    public String getProdCatName() {
        return prodCatName;
    }

    public void setProdCatName(String prodCatName) {
        this.prodCatName = prodCatName;
    }

    public byte[] getSpecParameters() {
        return specParameters;
    }

    public void setSpecParameters(byte[] specParameters) {
        this.specParameters = specParameters;
    }

    public Integer getProdStatus() {
        return prodStatus;
    }

    public void setProdStatus(Integer prodStatus) {
        this.prodStatus = prodStatus;
    }

    public String getProdStatusStr() {
        return prodStatusStr;
    }

    public void setProdStatusStr(String prodStatusStr) {
        this.prodStatusStr = prodStatusStr;
    }

    public Date getPutawayTime() {
        return putawayTime;
    }

    public void setPutawayTime(Date putawayTime) {
        this.putawayTime = putawayTime;
    }

    public Date getOutOfStockTime() {
        return outOfStockTime;
    }

    public void setOutOfStockTime(Date outOfStockTime) {
        this.outOfStockTime = outOfStockTime;
    }

    /**
     * 商品广告图片
     * @return
     */
    public String getAdImg() {
        return adImg;
    }

    /**
     * 商品广告图片
     * @param adImg
     */
    public void setAdImg(String adImg) {
        this.adImg = adImg;
    }

    public BigDecimal getProdMinPrice() {
        return prodMinPrice;
    }

    public void setProdMinPrice(BigDecimal prodMinPrice) {
        this.prodMinPrice = prodMinPrice;
    }

    public BigDecimal getProdMaxPrice() {
        return prodMaxPrice;
    }

    public void setProdMaxPrice(BigDecimal prodMaxPrice) {
        this.prodMaxPrice = prodMaxPrice;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public List<LogisticsDTO> getCheckedLogistics() {
        return checkedLogistics;
    }

    public void setCheckedLogistics(List<LogisticsDTO> checkedLogistics) {
        this.checkedLogistics = checkedLogistics;
    }
    
    public List<String> getProductImgUrl() {
		return productImgUrl;
	}

	public void setProductImgUrl(List<String> productImgUrl) {
		this.productImgUrl = productImgUrl;
	}

	/**
     * 商品主图的访问地址
     * @return
     */
	public String getImgUrl() {
		return imgUrl;
	}

	/**
	 * 商品主图的访问地址
	 * @param imgUrl
	 */
	public void setImgUrl(String imgUrl) {
		this.imgUrl = imgUrl;
	}

	/**
	 * 商品图片路径集合
	 * @return
	 */
	public List<ProductImgDTO> getProductImgs() {
		return productImgs;
	}

	/**
	 * 商品图片路径集合
	 * @param productImgs
	 */
	public void setProductImgs(List<ProductImgDTO> productImgs) {
		this.productImgs = productImgs;
	}

	public Integer getProdSaleNum() {
		return prodSaleNum;
	}

	public void setProdSaleNum(Integer prodSaleNum) {
		this.prodSaleNum = prodSaleNum;
	}

	public String getProdIntroduct() {
		return prodIntroduct;
	}

	public void setProdIntroduct(String prodIntroduct) {
		this.prodIntroduct = prodIntroduct;
	}

	

	
	
    
}
